home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The X-Philes (2nd Revision)
/
The X-Philes Number 1 (1995).iso
/
xphiles
/
hp48hor1
/
disd.doc
< prev
next >
Wrap
Text File
|
1995-03-31
|
3KB
|
89 lines
SATURN Disassembler for the HP-48SX Version 1.0
by Kevin Pryor, with improvements by John Gilbert
[plus two utilities by Dave Marsh]
DISD is an HP-48 directory that contains a SATURN disassembler and its many
subroutines. The programs are written in RPL with the exception of Dave
Kaffine's PEEK which is written in machine code. The entire directory is
11K and has 56 files. The Information on the SATURN chip comes solely from
Alonzo Gariepy's HP-28S Processor Notes and uses his mnemonics. I have not
extensively tested these programs. These programs are in the public
domain. Feel free to improve these programs in any way.
Instructions:
Change your I/O setup menu on your HP48 to binary, and wire.
Send DISD to your HP48. In the DISD directory the useful programs are:
DISR: Disassembles memory at #address and following addresses.
Uses ADDR to store the next address, ODMP stores the unused
hex string for the next instruction.
#address -> address:ASM
address:ASM -> address2:ASM
Example:
#0 DISR
0: "MOVE.1 3,P"
DISR
2: "JUMP.3 1BC"
DISJ Disassembles memory at the last jump or branch instruction
used by DISR or itself, the variable ADRJ.
Example:
( after above example )
DISJ
1BC: "JUMP.A 01FC6"
DISJ
1FC6: "CLRB 6,ST"
DISR
1FC9: "CLRB 2,ST"
DIS Disassembles a string of hex digits.
"hex digits" -> ASM
"remaining hex digits"
Example:
"D9D2421" DIS
"MOVE.A B,C"
"D2421"
DIS
"MOVE.A B,C"
"CLR.A C"
"421"
DIS
"MOVE.A B,C"
"CLR.A C"
"BRCS PC+13"
[To automate DIS, see CDIS below. -jkh-]
PKS Peek at address and put in form needed by DIS
#address -> "peek string"
#0 PKS
"2369B108DADF1008"
--- End of DISD documentation by Kevin Pryor ---
[Note: Dave Marsh wrote the following two little routines. Place them in
the DISD directory if you wish; they're useful if you do a lot of "batch"
disassembling rather than just one instruction at a time. -jkh-]
CDIS -- Complete Disassembler. Simply loops DIS through a whole hex string.
\<< DO DIS UNTIL DUP "" SAME END DROP \>>
FLE -- Connects strings on the stack (as after CDIS) with linefeeds.
This makes it easier to save a disassembly into a single variable,
ship it to a PC, and examine it on a real screen.
\<< 3 DEPTH START "\010" SWAP + + NEXT \>>